iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Security

駭客新手指南:從程式小白轉職成初級駭客系列 第 15

Day15 匯編語言及逆向工具

  • 分享至 

  • xImage
  •  

上一篇文章中,我們探討了逆向工程的基本概念,包括什麼是逆向工程,以及它在駭客世界中的應用。這次我們要更進一步,來了解逆向工程的核心:匯編語言及逆向工具。理解匯編語言是成為逆向工程高手的關鍵,因為在逆向過程中,我們經常會看到二進制程式碼轉換成的低階語言,而這些語言就是匯編語言。掌握它才能徹底解析程式的運作方式,甚至發現程式中的漏洞。

接下來,我們將逐步介紹匯編語言中的基本結構、操作,以及一些常見的逆向工具。透過這些基礎知識,能在未來進行實作時,更加得心應手。

匯編語言

匯編語言(Assembly Language)是一種低階程式語言,它直接對應於機器指令,讓我們能夠以接近硬體層級的方式控制電腦。相對於高階語言(如Java或Python),匯編語言可以更精確掌控每一步運算。通常在逆向過程中,駭客會利用反編譯工具把二進位可執行文件還原成匯編語言,進一步分析其邏輯與漏洞。

匯編語言的語法通常依賴於處理器架構。對於x86或x86-64架構的程式,駭客常見的匯編語言指令包括資料移動(MOV)、算術運算(ADD、SUB)、比較與跳轉(CMP、JMP)等。

匯編語言範例

因為匯編語言教不直覺,我會在範例後面附上python的對照版方便大家理解

  1. 資料移動
MOV AX, 10    ; 
MOV BX, AX    ; 

python寫法

AX = 10    
BX = AX
  1. 加減法運算
MOV AX, 5     ; 
ADD AX, 3     ; 
SUB AX, 2     ; 

python寫法

AX = 5      
AX += 3     
AX -= 2 
  1. 比較/跳轉
MOV AX, 10        ; 
CMP AX, 10        ; 
JE equal_label    ; 
MOV BX, 0         ; 
JMP end_label     ; 

equal_label:
MOV BX, 1         ; 

end_label:

python寫法

AX = 10           
if AX == 10:      
    BX = 1        
else:
    BX = 0
  1. 迴圈
MOV CX, 5        ; 
loop_label:
DEC CX           ; 
JNZ loop_label 

python寫法

CX = 5             
while CX > 0:       
    CX -= 1

在這些比較中可以發現,匯編語言真的相對難懂、不直覺很多,但這也是能夠精確控制硬體的原因。

常見的逆向工具

  1. IDA Pro
    一種反編譯工具,可以將二進位碼轉換為匯編語言,並提供圖形化的界面來展示程式結構。
  2. Ghidra
    美國國家安全局(NSA)開發的一個開源逆向工程工具。它提供與 IDA Pro 類似的功能,而且因為是開源的,因此得到了廣泛的使用和支持。
  3. OllyDbg
    一款專為 Windows 平台設計的動態除錯工具。它可以幫助我們在程式運行時觀察其行為,從而發現潛在的漏洞。
  4. Radare2
    一種開源逆向工具,支持靜態分析和動態除錯,並且擁有豐富的插件和擴展功能,比較適合進階駭客使用。

上一篇
Day14 逆向工程:讓程式的秘密變成你的秘密
下一篇
Day16 逆向工程:讓反編譯成為你的秘密武器
系列文
駭客新手指南:從程式小白轉職成初級駭客30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言